FIG. 1 depicts an illustrative system 100 in which a desired Session Initiation Protocol (SIP) communication may be established over two possible routes according to an embodiment of the invention. As used here, a SIP communication refers to communication utilizing a SIP protocol and/or any variations or improvements on such a protocol. As is known in the art, a SIP protocol is an ASCII-based, application-layer control protocol described in RFC 3261. Typically, the SIP protocol is implemented over an underlying transport layer protocol. Such transport layer protocols include Transport Layer Security (TLS), Transmission Control Protocol (TCP), Datagram Protocol (UDP), and others.
System 100 includes a first SIP user agent 102, a second SIP user agent 104, a first SIP server 106, a second SIP server 108, and a third SIP server 110. SIP user agents 102 and 104 may be user devices capable of interfacing with the user to provide communication to the user over a SIP protocol. Examples of SIP user agents include SIP phones, SIP “softphones” which may comprise computer equipped with audio capabilities and necessary software, and other types of SIP compatible user equipment.
SIP servers broadly refer to hardware and/or software devices utilized in the delivery of SIP-based communications over packetized networks. As such, SIP servers as referred to here includes entities such as SIP proxy servers, SIP redirect servers, SIP gateways, etc. The SIP servers 106, 108, and 110 may exist in a common domain. For example, they may exist in a common domain 112 as organized by a domain name service (DNS). Alternatively, the SIP servers 106, 108, and 110 may exist in different domains.
In FIG. 1, SIP user agent 102 is attempting to establish a desired SIP communication with SIP user agent 104. For example, this may be a request to initiate a SIP call between the two user agents. SIP user agent 102 initiates this communication by sending a SIP call request to the first SIP server 106. The first SIP server 106 now must make a decision to route the call request, such that it will efficiently reach SIP user agent 104.
As shown in FIG. 1, there are two possible routes for this SIP call request. The first possible route involves SIP user agent 102, the first SIP server 106, the second SIP server 108, and SIP user agent 104. This would require the first SIP server 106 to route the call request to the second SIP server 108. The second possible route involves SIP user agent 102, the first SIP server 106, the third SIP server 110, and SIP user agent 104. This would require the first SIP server 106 to route the call request to the third SIP server 110.
It is up to the first SIP server 106 to decide the route—i.e., to which SIP server should the call request be routed next. The timeliness of this decision can be a critical factor. For example, in the case of a call request, there is usually some limited time span in which the call request must be forwarded from the source (i.e., SIP user agent 102) to the destination (i.e., SIP user agent 104), and a response must be returned from the destination back to the source. If the first SIP serer 106 takes too long to make its decision to route the SIP call request, that can significantly increase the likelihood that time constraints associated with the call set up may be violated, causing a failure such as a time-out condition. Furthermore, a human caller may not wait too long when placing a call and can decide to hang up if a prolonged period of time is required for call set up.
For clarity of illustration, FIG. 1 depicts simple routes that only involve a routing decision by the first SIP server 106. In more complex environments, a SIP communication may travel over longer routes that traverse numerous SIP servers. As such, such a routing decision may need to be made at each one of the plurality of SIP servers along the route. This underscores the need for each routing decision to be made in a timely manner, because individual delays associated with routing decisions at the numerous SIP servers along the route will accumulate, and the effects of such delays are amplified over longer routes.
Thus, there is a significant need for techniques for facilitating SIP communications by efficiently selecting connections such as specific transport protocols.